package com.neudu.corejava.ch2;


public class Operation {

	public static void main(String[] args) {
		String i="Hello";
		
		//instanceof 用于判断某个对象是否为特定的数据类型，在反射或者集合编程时常用
		if (i instanceof String ) {
			System.out.println("这个类型是字符串");
			
		}
		//运算符号的优先级别；
		//运算符>比较符>逻辑符
		
		//++和--
		// 局部变量必须先初始化才能使用
		
		int k=2;
		k+=++k-k--*++k;
	
		
		
		System.out.println(k);
		
		
		//+号运算符号
		//1.做数学运算的加法运算
		//2.字符串的连接
		
		int m=10;
		char c='中';
		//数字+字符=数字+字符的编码的索引值
		int str=m+c;//自动类型转换，把字符char类型自动转关为int类型
		System.out.println(str);//计算的结果是int类型，是数值类型
		
		String str2 =""+ m+c; // 字符串+任何的数值类型，会把数值转换为数值字符串；计算结果也是字符串
		System.out.println(str2);
		
		String str3 = m*(m+c)+m+c+""; //满足四则运算的规律：从左到右进行
		System.out.println(str3);//计算结果是String类型，是字符串类型，对象型；
		
		//逻辑运算
		//逻辑运算的结果都是boolean值：true，false
		//比较运算符的运算结果也是Boolean值
		boolean b= m*(m+c)+m+c>c*c  ;//算术运算的优先级别高于比较运算，比较运算的优先级高于逻辑运算；
		System.out.println(b);
		
		//对于负责的表达式，需要掌握更具符号的优先级别进行拆分表达式，
		//按照运算级别从低到高进行拆分，运算则按照从低到高进行运算；
		b= m*(m+c)+m+c>c*c && m*(m+c)+m+c>c ||  m*(m+c)+m+c>c;
		//  m*(m+c)+m+c>c*c && m*(m+c)+m+c>c  和   m*(m+c)+m+c>c  看成两个整体；
		//m*(m+c)+m+c>c*c 和  m*(m+c)+m+c>c 
		
		//逻辑运算的短路
		//在进行逻辑或运算时，可能出现短路现象；当有多个或运算进行串联时，会从左到右进行运算 ，当左边任意一个表达式结果为真时，右边的所有表达式都会短路；
		if(2>1||2+3>0  && false){
			System.out.println("大于0");
		}
		//在进行逻辑与运算时，可能出现短路现象：当有多个与运算进行串联时，会从左到右进行运算，当左边有任一个表达式结果为假时，右边所有的计算都会短路；
		if (2+3>0 && false && 2>1) {// true && false && true
			System.out.println("大于0");
		}
		
		//byte ,short,char 进行算数运算时，会自动转换为int类型再进行计算，他们的计算结果是int类型；
		byte b1=12;
		short s1=14;
		char c1='A';
		//b1=b1+b1;算数运算后的结果是int类型，不能直接保存到byte类型中
		int i1=b1+b1;
		//s1 = b1+s1  ;算数运算后的结果是int类型，不能直接保存到short类型中
		//c1=c1+12 ;算数运算后的结果是int类型，不能直接保存到char类型中;
		 long l1=1234;
		 
		//错误： int i2=i1+l1;//int 类型+long类型 。小范围的数据类型与大发哪位的数据类型进行算数运算，会把小范围的数据自动转换为大范围的数据，再进行计算；
		 l1= i1+l1;//
		
		 
		 //强制类型转换
		 //大范围的数据转换为小范围的数据，需要进行类型的强制转换，小数据类型=（小数据类型） 大数据类型
		 //数据类型强制转会造成数据精度的损失，高数据位会全部损失掉，如果是小数转整数会把小数部分损失掉；
		 
		 
		 
		 
		 
		 
		 
	}
}
